package model;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import org.junit.Before;
import org.junit.Test;

public class TeilnehmerTest {

	Teilnehmer testTeilnehmer;
	
	@Before
	public void setUp() throws Exception {
		testTeilnehmer = new Teilnehmer("Paul", "Stranz", "Herr");
	}

	@Test
	public void testTeilnehmer() {

		Teilnehmer testTeilnehmer = new Teilnehmer("Paul", "Stranz", "Herr");
		assertEquals("Paul", testTeilnehmer.getVorname());
		assertEquals("Stranz", testTeilnehmer.getNachname());
		assertEquals("Herr", testTeilnehmer.getAnrede());
	}

	@Test
	public void testGetVorname() {
		assertEquals("Paul", testTeilnehmer.getVorname());
	}

	@Test
	public void testGetNachname() {
		assertEquals("Stranz", testTeilnehmer.getNachname());
	}

	@Test
	public void testGetAnrede() {
		assertEquals("Herr", testTeilnehmer.getAnrede());
	}

	@Test (expected = IllegalArgumentException.class)
	public void testSetVornameMitNull() throws Exception {
		testTeilnehmer.setVorname(null);
	}

	
	@Test (expected = IllegalArgumentException.class)
	public void testSetVornameMitBlank() throws Exception {
		testTeilnehmer.setVorname(" ");
	}
	
	@Test
	public void testSetVorname() throws Exception {
		testTeilnehmer.setVorname("Detlef");
		assertEquals("Detlef", testTeilnehmer.getVorname());
	}

	@Test (expected = IllegalArgumentException.class)
	public void testSetNachnameMitNull() throws Exception {
		testTeilnehmer.setNachname(null);
	}
	
	@Test (expected = IllegalArgumentException.class)
	public void testSetNachnameMitBlank() throws Exception {
		testTeilnehmer.setNachname(" ");
	}
	
	@Test
	public void testSetNachname() {
		testTeilnehmer.setNachname("Huber");
		assertEquals("Huber", testTeilnehmer.getNachname());
	}

	@Test (expected = IllegalArgumentException.class)
	public void testSetAnredeMitNull() throws Exception {
		testTeilnehmer.setAnrede(null);
	}
	
	@Test (expected = IllegalArgumentException.class)
	public void testSetAnredeMitBlank() throws Exception {
		testTeilnehmer.setAnrede(" ");
	}
	
	@Test
	public void testSetAnrede() {
		testTeilnehmer.setAnrede("muh");
		assertEquals("muh", testTeilnehmer.getAnrede());
	}

	@Test
	public void testCompareTo() {
		Teilnehmer testTeilnehmer2 = new Teilnehmer("Huber", "Meier", "Herr");
		int i = testTeilnehmer.compareTo(testTeilnehmer2);
		assertTrue(i>0);
	}

	@Test
	public void testEqualsObject() {
		Teilnehmer testTeilnehmer3 = new Teilnehmer("Paul", "Stranz", "Herr");
		assertEquals(testTeilnehmer3, testTeilnehmer);
	}

}
